package com.wgz.medicalmanagement.service;

import com.wgz.medicalmanagement.domain.entity.User;
import com.wgz.medicalmanagement.domain.dto.LoginRequest;
import com.wgz.medicalmanagement.domain.dto.RegisterRequest;
import com.wgz.medicalmanagement.domain.vo.LoginResponse;
import com.wgz.medicalmanagement.domain.vo.UserInfoVO;

/**
 * 用户服务接口
 *
 * @author medical
 * @since 2023-05-29
 */
public interface UserService {

    /**
     * 用户登录
     *
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    LoginResponse login(LoginRequest loginRequest);
    
    /**
     * 用户注册
     *
     * @param registerRequest 注册请求
     * @return 注册后的用户对象
     */
    User register(RegisterRequest registerRequest);
    
    /**
     * 检查用户名是否已存在
     *
     * @param username 用户名
     * @return 如果用户名已存在则返回true，否则返回false
     */
    boolean existsByUsername(String username);

    /**
     * 获取当前登录用户信息
     *
     * @return 用户信息
     */
    UserInfoVO getCurrentUserInfo();

    /**
     * 根据用户名获取用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    User getUserByUsername(String username);

    /**
     * 根据ID获取用户
     *
     * @param userId 用户ID
     * @return 用户对象
     */
    User getUserById(Long userId);
    
    /**
     * 注销登录
     */
    void logout();
} 